package cn.tedu.carehome.foundation.repo;

import cn.tedu.carehome.foundation.pojo.vo.VisitorListItemVO;
import cn.tedu.carehome.foundation.pojo.vo.VisitorStandardVO;

import java.util.List;

/**
 * 处理来访人员缓存的数据访问接口
 *
 * @author 张子豪
 * @version 0.0.1
 */
public interface IVisitorRedisRepository {
    /**
     * 品牌数据在缓存中的Key的前缀
     */
    String BRAND_ITEM_KEY_PREFIX = "visitor:item:";
    /**
     * 品牌列表数据在缓存中的Key
     */
    String BRAND_LIST_KEY = "visitor:list";
    /**
     * 品牌数据的所有缓存数据的Key的集合的Key
     */
    String BRAND_ALL_KEYS_KEY = "visitor:all-keys";

    /**
     * 向缓存中写入来访人员数据
     * @param visitorStandardVO 来访人员数据
     */
    void save(VisitorStandardVO visitorStandardVO);

    /**
     * 向缓存中写入访问人员列表数据
     * @param visitorListItemVOS 访问人员列表
     */
    void save(List<VisitorListItemVO> visitorListItemVOS);

    /**
     * 删除缓存中所有访问人员数据
     */
    void deleteAll();

    /**
     * 从缓存中读取访问人员数据
     * @param id 访问人员ID
     * @return 匹配的访问人员数据，如果没有匹配的数据，则返回null
     */
    VisitorStandardVO get(Long id);

    List<VisitorListItemVO> list();
    /**
     * 从缓存中读取访问人员列表数据
     * @param start 读取数据的起始下标，下标值从0开始顺序编号
     * @param end 读取数据的截止下标，如果需要读取至最后一条数据，请使用 -1
     * @return 访问人员列表数据
     */
    List<VisitorListItemVO> list(long start,long end);
}
